import os
import sys
import shutil
from setuptools import setup
from Cython.Build import cythonize

def compile_safe_modules():
    """只编译不含线程的模块"""

    # 1. 备份原文件
    if not os.path.exists('backup'):
        os.makedirs('backup')

    files_to_backup = ['viewer_rc.py', 'viewer_new_ui.py', 'viewer_rc.py', 'main.py']
    for f in files_to_backup:
        if os.path.exists(f):
            shutil.copy(f, f'backup/{f}')

    # 2. 编译UI和资源文件
    print("正在编译 viewer_new_ui.py 和 viewer_rc.py...")

    setup(
        ext_modules=cythonize(
            ["viewer_new_ui.py", "viewer_rc.py"],
            compiler_directives={
                'language_level': "3",
                'boundscheck': False,
                'wraparound': False,
            }
        ),
        script_args=['build_ext', '--inplace'],
        options={'build_ext': {'build_lib': '.'}},
    )

    # 3. 重命名pyd文件（去除Python版本信息）
    for file in os.listdir('.'):
        if file.endswith('.pyd') and 'cp' in file:
            base_name = file.split('.')[0]
            new_name = base_name + '.pyd'
            if os.path.exists(new_name):
                os.remove(new_name)
            os.rename(file, new_name)
            print(f"生成: {new_name}")

    # # 4. 删除编译产生的临时文件
    # if os.path.exists('build'):
    #     shutil.rmtree('build')

    # # 删除.c文件
    # for file in os.listdir('.'):
    #     if file.endswith('.c'):
    #         os.remove(file)

    print("编译完成！")

if __name__ == "__main__":
    compile_safe_modules()
